草庐IT

c++ - SIMD C++ 库

全部标签

c - 在 swift 中包装像 facebook 的 ZStandard 这样的库?

Facebook创建了一种开源快速无损压缩算法,针对zlib级别的实时压缩场景和更好的压缩比,称为ZStandard.我一直在寻找描述c到swift包装的教程,例如this,但看起来不够全面,在编写包装器之前我必须了解哪些先决条件?等我写完了,我也会把它开源。 最佳答案 谢谢你的好问题。我看过图书馆并玩过它,它看起来很有趣。我会说您需要在C程序中熟练使用ZSTDC库。您还需要熟练使用Swift进行编程。根据您要包装的API部分,您可能需要了解如何在Swift中处理原始内存(Unsafe...类型)。包装ZSTD时需要考虑的一些挑战:

ios - 从 swift viewcontroller 调用 .c 文件中的 swift 函数

我正在IOS中调用应用程序。该项目进展swift。我使用PJSIP作为第三方库来调用电话,并使用Asterisk作为Voip服务器。我已经设置了服务器,还在我的项目中集成了PJSIP。我能够注册到服务器,调用电话,接听电话。当我收到显示用户ID和其他信息的调用时,我想初始化一个新的ViewController。接收调用方法用C实现。/*Callbackcalledbythelibraryuponreceivingincomingcall*/staticvoidon_incoming_call(pjsua_acc_idacc_id,pjsua_call_idcall_id,pjsip_r

c - 在 Swift 3 中使用具有回调函数指针作为参数的 C API 函数

我正在使用Swift3为C库构建一个包装器/接口(interface)。我需要调用的函数之一需要一个用于回调的函数指针作为参数。详细说明:在所述函数成功完成它必须的文件操作后,它会调用给定参数指针所指的函数-本质上让我对所述数据进行其他操作函数如下所示:HSYNCMXDEF(Syncer)(DWORDh,DWORDt,QWORDp,SYNCPROC*proc,void*user);回调函数类型SYNCPROC定义如下:typedefvoid(CALLBACKSYNCPROC)(HSYNCh,DWORDc,DWORDd,void*user);到目前为止,我只能通过将回调参数设置为nil来

c - 在 swift 5 中将 void* 参数传递给 c 函数时,'withUnsafeBytes' 被弃用警告

我有一个使用外部提供的c库快速解析FIT文件的库。解析函数将void*data作为参数.为了调用该函数,我使用data.withUnsafeBytes({(ptr:UnsafePointer)in...}转换数据构建c函数的参数并且它工作正常。将Xcode升级到swift5后,我现在收到弃用警告“withUnsafeBytes”已弃用:使用withUnsafeBytes(_:(UnsafeRawBufferPointer)throws->R)rethrows->R相反我不知道如何修复代码以移除已弃用的警告。代码在swift4中运行良好且没有警告我试图将闭包中的参数更改为UnsafeRa

ios - 从 C api 接收多维数组,如何在 Swift 中处理?

我在我的Swift应用程序中使用了一个C库,但我不知道如何获取C方法应该返回的多维数组。我从CAPI收到这个:structresultArray{double*data;intsize[2];};地点:size=矩阵大小,一个包含行数和列数的二元数组data=矩阵数据我可以快速执行以下操作来获取大小:letnumRows=Int(results.size.0)letnumColoumns=Int(results.size.1)但我不明白如何获取矩阵以便我可以遍历它?我尝试了以下方法:letmatrixResult=results.data.memory这似乎只返回一个double值,因

java - java.io.Serializable 的 C/C++ 等价物是什么?

java.io.Serializable的C/C++等效项是什么??有对序列化库的引用:SerializeDataStructuresinC还有:http://troydhanson.github.io/tpl/index.htmlhttp://www.boost.org/doc/libs/1_41_0/libs/serialization/doc/index.htmlhttps://developers.google.com/protocol-buffers/docs/cpptutorial#optimization-tips但这样的等价物是否存在?因此,如果我在Java中有一个如下

java - 高性能应用程序中的 C/C++ 与 Java/C#

我的问题是关于Java与编译代码的性能,例如,高性能数值应用程序中的C++/fortran/assembly。我知道这是一个有争议的话题,但我正在寻找具体的答案/例子。还有社区维基。我以前也问过类似的问题,但我认为我说得很笼统,并没有得到我想要的答案。double矩阵-矩阵乘法,在blas库中通常称为dgemm,能够实现近100%的峰值CPU性能(以每秒浮点运算数计)。有几个因素可以实现这种性能:缓存阻塞,实现最大内存局部性循环展开以最小化控制开销vector指令,如SSE内存预取保证没有内存别名我见过很多使用汇编、C++、Fortran、Atlas、供应商BLAS的基准测试(典型情况

java - 在 Java 中使用 FUSE 库;尝试复制 hello.c 示例

我正在尝试使用JNA创建到FUSE库的绑定(bind),但我在路上遇到了障碍。我尽可能地最小化了代码,以使其在此处易于理解。FUSE库附带了一些用C编写的示例文件系统。其中最简单的是hello.c.以下是其代码的最小化版本,只是文件系统函数中的一些打印:hello.c:/*FUSE:FilesysteminUserspaceCopyright(C)2001-2007MiklosSzerediThisprogramcanbedistributedunderthetermsoftheGNUGPL.SeethefileCOPYING.gcc-Wallhello.c-ohello`pkg-co

java - C 或 Java 的非玩具软件事务内存

我正在考虑通过1或2个大学类(class)的指导实验室来教授软件事务内存的使用的可能性。我只知道Haskell的STM,但该类(class)的学生可能从未听说过它。我已经在网上或其他问题中找到了一些此类库的列表(例如http://en.wikipedia.org/wiki/Software_transactional_memory#C.2FC.2B.2B)。当你阅读本文时,我正在检查它们,但其中许多似乎没有很好的文档(大多数是研究原型(prototype),仅在论文中模糊描述,我宁愿教授一些更常用和有据可查的东西)。此外,维基百科提供的许多链接都是悬空的。总而言之,是否有针对工业项目(

java - 是否可以在不重写的情况下将数据添加到文件中?

我处理非常大的二进制文件(每个文件几GB到几TB)。这些文件以旧格式存在,升级需要将header写入文件的FRONT。我可以创建一个新文件并重写数据,但有时这可能需要很长时间。我想知道是否有更快的方法来完成此升级。该平台仅限于Linux,我愿意使用低级函数(ASM、C、C++)/文件系统技巧来实现这一点。主要库是Java,JNI是完全可以接受的。 最佳答案 没有通用的方法可以在本地执行此操作。也许某些文件系统提供了一些函数来执行此操作(对此无法给出任何提示),但您的代码将依赖于文件系统。一个解决方案可能是模拟一个文件系统:您可以将数